//
//
// Adventure screen handler for the Temple
//
//
//

#ifndef ADV_TEMPLE_H_INCLUDED
#define ADV_TEMPLE_H_INCLUDED

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "linkage_data.h"
#include "stationary_adventure_object.h"

enum t_town_type;

// -------------------------------------------------------
// artifact as it appears on the adventure map
// -------------------------------------------------------
class t_adv_temple : public t_stationary_adventure_object
{
public:
	t_adv_temple(  std::string const& source );
	t_adv_temple( t_town_type type );

	t_town_type   get_alignment() const;
	std::string   get_balloon_help() const;
	virtual void  activate_trigger( t_army* army, t_adv_map_point const& point, 
		                            t_direction direction, t_adventure_frame* frame );
	virtual void  right_click( t_mouse_event const&	event,
							   t_adventure_frame*		adventure_frame );

};

inline t_town_type t_adv_temple::get_alignment() const
{
	return t_town_type( get_major_subtype() );
}

class t_random_temple : public t_stationary_adventure_object
{
public:
	t_random_temple( std::string const& source );
	virtual bool		read_from_map( std::streambuf &		buffer,
							           t_progress_handler * );
	virtual void		place( t_adventure_map& map, t_adv_map_point const& point );
	virtual bool        preplacement( t_adventure_map& map, int pass );

private:
	t_town_type		m_alignment; // Chosen in preplacement()
	t_linkage_data  m_linkage_info;
};


#endif // ADV_TEMPLE_H_INCLUDED